#ifndef PROPERTYFACTORY_H
#define PROPERTYFACTORY_H
#include "StompedReality/Core/TypeSystem/TypeField.h"
#include "StomperLib/Controls/Property/NumericPropertyBase.h"
#include "StomperLib/Controls/Property/TextPropertyBase.h"
#include "StomperLib/Objects/EditorObjectInfo.h"
#include <Gwen/Controls/Properties.h>
#include <Gwen/Controls/Property/BaseProperty.h>

namespace StomperLib {
namespace Controls {
namespace Property {

class PropetyFactory
{
 public:

  PropetyFactory( ){
  }

  ~PropetyFactory( ){
  }

  static Gwen::Controls::Property::Base* CreateProperty( StomperLib::EditorObjectInfo* object,
                                                         std::string fieldName, std::string label,
                                                         Gwen::Controls::Properties* base );

 private:

  static void InitText( Gwen::Controls::Properties* base, StomperLib::EditorObjectInfo* object,
                        StomperLib::Controls::Property::TextPropertyBase* prop,
                        StompedReality::type_system::TypeField field,
                        std::string label );
  static void InitNumber( Gwen::Controls::Properties* base, StomperLib::EditorObjectInfo* object,
                          StomperLib::Controls::Property::NumericPropertyBase* prop,
                          StompedReality::type_system::TypeField field,
                          std::string label );

};

}
}
}
#endif // ifndef PROPERTYFACTORY_H